package model

// BasicResponse 请求结果基本类型
type BasicResponse[T any] struct {
	// 请求得到的具体结果
	Data T `json:"data"`
	// 错误码
	ErrorCode any `json:"errorCode"`
	// 错误消息
	ErrorMessage any `json:"errorMessage"`
}

// DownloadListData 请求/download-labels接口时，包含的下载列表对象响应
type DownloadListData struct {
	// 列表名称
	Label string `json:"label"`
	// 已完成数量
	TotalComplete int `json:"totalComplete"`
	// 总影像数量
	DownloadCount int `json:"downloadCount"`
	// 下载总大小
	DownloadSize string `json:"downloadSize"`
	// 已准备数据大小
	DateEntered int64 `json:"dateEntered"`
}

// LoadListData 请求/download-order-load接口时，包含下载任务条目的对象响应
type LoadListData struct {
	// 下载任务id
	DownloadId int64 `json:"downloadId"`
	// 影像显示id
	DisplayId string `json:"displayId"`
	// 影像实体id
	EntityId string `json:"entityId"`
	// 文件大小（字节）
	Filesize int64 `json:"filesize"`
}

// RetrieveDownloadData 请求/download-retrieve获取下载链接时，一景影像的下载信息对象
type RetrieveDownloadData struct {
	// 影像显示Id
	DisplayId string `json:"displayId"`
	// 影像实体id
	EntityId string `json:"entityId"`
	// 文件大小（字节）
	Filesize int64 `json:"filesize"`
	// 所属的任务标签
	Label string `json:"label"`
	// 状态码，A和P表示可以下载
	StatusCode string `json:"statusCode"`
	// 状态名称，Proxied或者available即可以下载
	StatusText string `json:"statusText"`
	// 下载地址
	Url string `json:"url"`
}

// RetrieveListData 请求/download-retrieve获取下载链接时，包含下载链接对象的响应
type RetrieveListData struct {
	// 初次执行取回请求时，所有的影像信息存放在available数组，表示已准备好下载
	Available []RetrieveDownloadData `json:"available"`
	// 后续再执行取回请求时，所有影像信息存放在requested数组，表示已请求的下载任务
	Requested []RetrieveDownloadData `json:"requested"`
}